/*
 * Copyright© 2003-2019 浙江汇信科技有限公司, All Rights Reserved.
 */
package com.icinfo.cloud.provider.punish.ucase.casemain.service;

import com.icinfo.cloud.provider.punish.ucase.casemain.dto.CaseDocumentModifyOfCaseRegisterSaveDto;
import com.icinfo.cloud.provider.punish.ucase.casemain.dto.CaseDocumentModifyOfCaseSourceSaveDto;
import com.icinfo.cloud.provider.punish.ucase.casemain.dto.CaseDocumentModifyRecordQueryDto;
import com.icinfo.cloud.provider.punish.ucase.casemain.dto.CaseDocumentModifyRecordSaveDto;
import com.icinfo.cloud.provider.punish.ucase.casemain.model.CaseDocumentModifyRecord;
import com.icinfo.cloud.provider.punish.ucase.casemain.vo.CaseDocumentModifyRecordVo;
import com.icinfo.framework.common.web.Result;
import com.icinfo.framework.core.service.BaseService;

import java.util.List;

/**
 * 描述: 文书修改记录表 case_document_modify_record 对应的Service接口.<br>
 *
 * @author framework generator
 * @date 2023年01月06日
 */
public interface ICaseDocumentModifyRecordService extends BaseService {

    /**
     * 描述： 保存立案审批表文书修改记录
     *
     * @author: zhengqiang
     * @date: 2023/1/7
     * @param: caseDocumentModifyRecordSaveDto
     * @return {@link Result}
     **/
    Result saveCaseDocumentModifyOfCaseRegister(CaseDocumentModifyOfCaseRegisterSaveDto caseDocumentModifyOfCaseRegisterSaveDto);

    /**
     * 描述： 保存通用文书修改记录
     *
     * @author: zhengqiang
     * @date: 2023/1/7
     * @param: caseDocumentModifyRecordSaveDto
     * @return {@link Result}
     **/
    Result saveCaseDocumentModifyRecord(CaseDocumentModifyRecordSaveDto caseDocumentModifyRecordSaveDto);

    /**
     * 【V1.11.2】描述： 案件来源登记表文书修改
     *
     * @author: zhengqiang
     * @date: 2023/3/17
     * @param: caseDocumentModifySaveDto
     * @return {@link Result}
     **/
    Result saveCaseSourceDocumentModifyRecord(CaseDocumentModifyOfCaseSourceSaveDto caseDocumentModifySaveDto);

    /**
     * 描述： 查看文书修改记录
     *
     * @author: zhengqiang
     * @date: 2023/1/7
     * @param: caseDocumentModifyRecordQueryDto
     * @return {@link List< CaseDocumentModifyRecordVo>}
     **/
    List<CaseDocumentModifyRecordVo> getCaseDocumentModifyRecordByCondition(CaseDocumentModifyRecordQueryDto caseDocumentModifyRecordQueryDto);

    /**
     * 描述： 查看同一文书修改记录(正常完结流程)
     *
     * @author: zhengqiang
     * @date: 2023/3/6
     * @param: caseDocumentModifyRecordQueryDto
     * @return {@link List< CaseDocumentModifyRecordVo>}
     **/
    List<CaseDocumentModifyRecordVo> getNormalCaseDocumentModifyRecordList(CaseDocumentModifyRecordQueryDto queryDto);

    /**
     * 描述：通过文书id获取文书修改记录
     *
     * @param documentId 文档id
     * @return {@link CaseDocumentModifyRecord }
     * @author shishengyao
     * @date 2023/01/07
     */
    CaseDocumentModifyRecord getCaseDocumentModifyRecordByDocumentId(String documentId);

    /**
     * 根据文书id删除文书修改记录
     * @param documentId
     */
    void deleteCaseDocumentModifyRecordByDocumentId(String documentId);

    /**
     * 描述：通过文书id获取文书修改记录
     *
     * @param documentId 文档id
     * @return {@link CaseDocumentModifyRecord }
     * @author shishengyao
     * @date 2023/01/07
     */
    List<CaseDocumentModifyRecord> getCaseDocumentModifyRecordListByDocumentId(String documentId);

    /**
     * 描述： 根据原始文书id查询修改文书记录
     *
     * @author: zhengqiang
     * @date: 2023/3/2
     * @param: caseId
     * @param: modifyFlagId
     * @return {@link List< CaseDocumentModifyRecord>}
     **/
    List<CaseDocumentModifyRecord> getCaseDocumentModifyRecordListByOriginalDocumentId(String caseId, String originalDocumentId);

    /**
     * 描述： 根据修改标识id查询修改文书记录
     *
     * @author: zhengqiang
     * @date: 2023/3/2
     * @param: queryDto
     * @return {@link List< CaseDocumentModifyRecord>}
     **/
    List<CaseDocumentModifyRecord> getCaseDocumentModifyRecordListByModifyFlagId(CaseDocumentModifyRecordQueryDto queryDto);

    /**
     * 描述： 根据文书目录编码查询修改文书记录
     *
     * @author: zhengqiang
     * @date: 2023/3/6
     * @param: queryDto
     * @return {@link List< CaseDocumentModifyRecord>}
     **/
    List<CaseDocumentModifyRecord> getCaseDocumentModifyRecordByCatalogCode(CaseDocumentModifyRecordQueryDto queryDto);
}
